
package std.reflect
import std.collection.*
import std.sync.*

import std.fs.*

@!APILevel[
    since: "22"
]
public class ClassTypeInfo <: TypeInfo {
    /**
    * @throws OutOfMemoryError
    * @throws IllegalMemoryException
    * @throws NoneValueException
    * @throws ReflectException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws InfoNotFoundException
    * @throws IllegalSynchronizationStateException
    * @throws IllegalTypeException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public redef static func get(qualifiedName: String): ClassTypeInfo
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws IllegalTypeException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public redef static func of(a: Any): ClassTypeInfo
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public static func of(a: Object): ClassTypeInfo
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws IllegalTypeException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public redef static func of<T>(): ClassTypeInfo
    
    /**
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws InfoNotFoundException
    * @throws NoneValueException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop constructors: Collection<ConstructorInfo>
    
    /**
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop instanceVariables: Collection<InstanceVariableInfo>
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop staticVariables: Collection<StaticVariableInfo>
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws MisMatchException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop superClass: Option<ClassTypeInfo>
    
    /**
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws IllegalMemoryException
    * @throws NoneValueException
    * @throws ReflectException
    * @throws OutOfMemoryError
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop sealedSubclasses: Collection<ClassTypeInfo>
    
    /**
    * @throws IllegalTypeException
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws ReflectException
    * @throws InvocationTargetException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func construct(args: Array<Any>): Any
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func isOpen(): Bool
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func isAbstract(): Bool
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func isSealed(): Bool
    
    /**
    * @throws NoneValueException
    * @throws IllegalSynchronizationStateException
    * @throws ReflectException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws OutOfMemoryError
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func getConstructor(parameterTypes: Array<TypeInfo>): ConstructorInfo
    
    /**
    * @throws ReflectException
    * @throws IllegalArgumentException
    * @throws OutOfMemoryError
    * @throws IndexOutOfBoundsException
    * @throws IllegalStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func getInstanceVariable(name: String): InstanceVariableInfo
    
    /**
    * @throws NoneValueException
    * @throws IllegalSynchronizationStateException
    * @throws ReflectException
    * @throws IllegalArgumentException
    * @throws OutOfMemoryError
    * @throws IndexOutOfBoundsException
    * @throws IllegalStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func getStaticVariable(name: String): StaticVariableInfo
}

@!APILevel[
    since: "22"
]
public open class ReflectException <: Exception {
    @!APILevel[
        since: "22"
    ]
    public init()
    
    @!APILevel[
        since: "22"
    ]
    public init(message: String)
}

@!APILevel[
    since: "22"
]
public class InfoNotFoundException <: ReflectException {
    @!APILevel[
        since: "22"
    ]
    public init()
    
    @!APILevel[
        since: "22"
    ]
    public init(message: String)
}

@!APILevel[
    since: "22"
]
public class MisMatchException <: ReflectException {
    @!APILevel[
        since: "22"
    ]
    public init()
    
    @!APILevel[
        since: "22"
    ]
    public init(message: String)
}

@!APILevel[
    since: "22"
]
public class IllegalSetException <: ReflectException {
    @!APILevel[
        since: "22"
    ]
    public init()
    
    @!APILevel[
        since: "22"
    ]
    public init(message: String)
}

@!APILevel[
    since: "22"
]
public class IllegalTypeException <: ReflectException {
    @!APILevel[
        since: "22"
    ]
    public init()
    
    @!APILevel[
        since: "22"
    ]
    public init(message: String)
}

@!APILevel[
    since: "22"
]
public class InvocationTargetException <: ReflectException {
    @!APILevel[
        since: "22"
    ]
    public init()
    
    @!APILevel[
        since: "22"
    ]
    public init(message: String)
}

@!APILevel[
    since: "22"
]
public class GenericTypeInfo <: TypeInfo & Equatable<GenericTypeInfo> {
    /**
    * @throws ReflectException
    * @throws OutOfMemoryError
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public operator func ==(that: GenericTypeInfo): Bool
}

@!APILevel[
    since: "22"
]
public class InstanceFunctionInfo <: Equatable<InstanceFunctionInfo> & Hashable & ToString {
    /**
    * @throws IllegalArgumentException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop genericParams: Collection<GenericTypeInfo>
    
    /**
    * @throws NoneValueException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop name: String
    
    /**
    * @throws IllegalArgumentException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop parameters: ReadOnlyList<ParameterInfo>
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop returnType: TypeInfo
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop modifiers: Collection<ModifierInfo>
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop annotations: Collection<Annotation>
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func isOpen(): Bool
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func isAbstract(): Bool
    
    /**
    * @throws NoneValueException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws IndexOutOfBoundsException
    * @throws OutOfMemoryError
    * @throws IllegalTypeException
    * @throws IllegalArgumentException
    * @throws ReflectException
    * @throws InvocationTargetException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func apply(instance: Any, args: Array<Any>): Any
    
    /**
    * @throws NoneValueException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws OutOfMemoryError
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws IllegalTypeException
    * @throws ReflectException
    * @throws InvocationTargetException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func apply(instance: Any, genericTypeArgs: Array<TypeInfo>, args: Array<Any>): Any
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func findAnnotation<T>(): ?T where T <: Annotation
    
    /**
    * @throws OutOfMemoryError
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws NoneValueException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func findAllAnnotations<T>(): Array<T> where T <: Annotation
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func getAllAnnotations(): Array<Annotation>
    
    @!APILevel[
        since: "22"
    ]
    public operator func ==(that: InstanceFunctionInfo): Bool
    
    @!APILevel[
        since: "22"
    ]
    public operator func !=(that: InstanceFunctionInfo): Bool
    
    @!APILevel[
        since: "22"
    ]
    public func hashCode(): Int64
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func toString(): String
}

@!APILevel[
    since: "22"
]
public class StaticFunctionInfo <: Equatable<StaticFunctionInfo> & Hashable & ToString {
    /**
    * @throws IllegalArgumentException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop genericParams: Collection<GenericTypeInfo>
    
    /**
    * @throws NoneValueException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop name: String
    
    /**
    * @throws IllegalArgumentException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop parameters: ReadOnlyList<ParameterInfo>
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop returnType: TypeInfo
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop modifiers: Collection<ModifierInfo>
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop annotations: Collection<Annotation>
    
    /**
    * @throws NoneValueException
    * @throws IllegalSynchronizationStateException
    * @throws IndexOutOfBoundsException
    * @throws OutOfMemoryError
    * @throws IllegalTypeException
    * @throws IllegalArgumentException
    * @throws InfoNotFoundException
    * @throws ReflectException
    * @throws InvocationTargetException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func apply(thisType: TypeInfo, args: Array<Any>): Any
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalSynchronizationStateException
    * @throws IndexOutOfBoundsException
    * @throws IllegalTypeException
    * @throws IllegalArgumentException
    * @throws InfoNotFoundException
    * @throws ReflectException
    * @throws InvocationTargetException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func apply(thisType: TypeInfo, genericTypeArgs: Array<TypeInfo>, args: Array<Any>): Any
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func findAnnotation<T>(): ?T where T <: Annotation
    
    /**
    * @throws OutOfMemoryError
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws NoneValueException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func findAllAnnotations<T>(): Array<T> where T <: Annotation
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func getAllAnnotations(): Array<Annotation>
    
    @!APILevel[
        since: "22"
    ]
    public operator func ==(that: StaticFunctionInfo): Bool
    
    @!APILevel[
        since: "22"
    ]
    public operator func !=(that: StaticFunctionInfo): Bool
    
    @!APILevel[
        since: "22"
    ]
    public func hashCode(): Int64
    
    /**
    * @throws OutOfMemoryError
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws IndexOutOfBoundsException
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func toString(): String
}

@!APILevel[
    since: "22"
]
public class InstancePropertyInfo <: Equatable<InstancePropertyInfo> & Hashable & ToString {
    @!APILevel[
        since: "22"
    ]
    public prop name: String
    
    /**
    * @throws OutOfMemoryError
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws NoneValueException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop typeInfo: TypeInfo
    
    /**
    * @throws NoneValueException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop modifiers: Collection<ModifierInfo>
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop annotations: Collection<Annotation>
    
    /**
    * @throws NoneValueException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func isOpen(): Bool
    
    /**
    * @throws NoneValueException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func isAbstract(): Bool
    
    @!APILevel[
        since: "22"
    ]
    public func isMutable(): Bool
    
    /**
    * @throws NoneValueException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws IndexOutOfBoundsException
    * @throws OutOfMemoryError
    * @throws IllegalTypeException
    * @throws IllegalArgumentException
    * @throws ReflectException
    * @throws InvocationTargetException
    * @throws UnsupportedException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func getValue(instance: Any): Any
    
    /**
    * @throws NoneValueException
    * @throws IllegalSynchronizationStateException
    * @throws IndexOutOfBoundsException
    * @throws OutOfMemoryError
    * @throws IllegalTypeException
    * @throws IllegalArgumentException
    * @throws ReflectException
    * @throws InvocationTargetException
    * @throws InfoNotFoundException
    * @throws IllegalSetException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func setValue(instance: Any, newValue: Any): Unit
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func findAnnotation<T>(): ?T where T <: Annotation
    
    /**
    * @throws OutOfMemoryError
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws NoneValueException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func findAllAnnotations<T>(): Array<T> where T <: Annotation
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func getAllAnnotations(): Array<Annotation>
    
    /**
    * @throws NoneValueException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public operator func ==(that: InstancePropertyInfo): Bool
    
    /**
    * @throws NoneValueException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public operator func !=(that: InstancePropertyInfo): Bool
    
    /**
    * @throws NoneValueException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func hashCode(): Int64
    
    /**
    * @throws OutOfMemoryError
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws NoneValueException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func toString(): String
}

@!APILevel[
    since: "22"
]
public class StaticPropertyInfo <: Equatable<StaticPropertyInfo> & Hashable & ToString {
    @!APILevel[
        since: "22"
    ]
    public prop name: String
    
    /**
    * @throws OutOfMemoryError
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws NoneValueException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop typeInfo: TypeInfo
    
    /**
    * @throws NoneValueException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop modifiers: Collection<ModifierInfo>
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop annotations: Collection<Annotation>
    
    @!APILevel[
        since: "22"
    ]
    public func isMutable(): Bool
    
    /**
    * @throws NoneValueException
    * @throws IllegalSynchronizationStateException
    * @throws IndexOutOfBoundsException
    * @throws OutOfMemoryError
    * @throws IllegalTypeException
    * @throws IllegalArgumentException
    * @throws InfoNotFoundException
    * @throws ReflectException
    * @throws InvocationTargetException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func getValue(): Any
    
    /**
    * @throws IllegalTypeException
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws InvocationTargetException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws IllegalSetException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func setValue(newValue: Any): Unit
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func findAnnotation<T>(): ?T where T <: Annotation
    
    /**
    * @throws OutOfMemoryError
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws NoneValueException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func findAllAnnotations<T>(): Array<T> where T <: Annotation
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func getAllAnnotations(): Array<Annotation>
    
    /**
    * @throws NoneValueException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public operator func ==(that: StaticPropertyInfo): Bool
    
    /**
    * @throws NoneValueException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public operator func !=(that: StaticPropertyInfo): Bool
    
    /**
    * @throws NoneValueException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func hashCode(): Int64
    
    /**
    * @throws OutOfMemoryError
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws NoneValueException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func toString(): String
}

@!APILevel[
    since: "22"
]
public class ConstructorInfo <: Equatable<ConstructorInfo> & Hashable & ToString {
    /**
    * @throws IllegalArgumentException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop parameters: ReadOnlyList<ParameterInfo>
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop annotations: Collection<Annotation>
    
    /**
    * @throws NoneValueException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws IndexOutOfBoundsException
    * @throws OutOfMemoryError
    * @throws IllegalTypeException
    * @throws IllegalArgumentException
    * @throws ReflectException
    * @throws InvocationTargetException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func apply(args: Array<Any>): Any
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func findAnnotation<T>(): ?T where T <: Annotation
    
    /**
    * @throws OutOfMemoryError
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws NoneValueException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func findAllAnnotations<T>(): Array<T> where T <: Annotation
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func getAllAnnotations(): Array<Annotation>
    
    @!APILevel[
        since: "22"
    ]
    public operator func ==(that: ConstructorInfo): Bool
    
    @!APILevel[
        since: "22"
    ]
    public operator func !=(that: ConstructorInfo): Bool
    
    @!APILevel[
        since: "22"
    ]
    public func hashCode(): Int64
    
    /**
    * @throws InfoNotFoundException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func toString(): String
}

@!APILevel[
    since: "22"
]
public class GlobalFunctionInfo <: Equatable<GlobalFunctionInfo> & Hashable & ToString {
    /**
    * @throws IllegalArgumentException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop genericParams: Collection<GenericTypeInfo>
    
    /**
    * @throws NoneValueException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop name: String
    
    /**
    * @throws IllegalArgumentException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop parameters: ReadOnlyList<ParameterInfo>
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop returnType: TypeInfo
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop annotations: Collection<Annotation>
    
    /**
    * @throws NoneValueException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws IndexOutOfBoundsException
    * @throws OutOfMemoryError
    * @throws IllegalTypeException
    * @throws IllegalArgumentException
    * @throws ReflectException
    * @throws InvocationTargetException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func apply(args: Array<Any>): Any
    
    /**
    * @throws InfoNotFoundException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws IllegalTypeException
    * @throws InvocationTargetException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func apply(genericTypeArgs: Array<TypeInfo>, args: Array<Any>): Any
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func findAnnotation<T>(): ?T where T <: Annotation
    
    /**
    * @throws OutOfMemoryError
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws NoneValueException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func findAllAnnotations<T>(): Array<T> where T <: Annotation
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func getAllAnnotations(): Array<Annotation>
    
    @!APILevel[
        since: "22"
    ]
    public operator func ==(that: GlobalFunctionInfo): Bool
    
    @!APILevel[
        since: "22"
    ]
    public operator func !=(that: GlobalFunctionInfo): Bool
    
    @!APILevel[
        since: "22"
    ]
    public func hashCode(): Int64
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func toString(): String
}

@!APILevel[
    since: "22"
]
public class InterfaceTypeInfo <: TypeInfo {
    /**
    * @throws OutOfMemoryError
    * @throws IllegalMemoryException
    * @throws NoneValueException
    * @throws ReflectException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws InfoNotFoundException
    * @throws IllegalSynchronizationStateException
    * @throws IllegalTypeException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public redef static func get(qualifiedName: String): InterfaceTypeInfo
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws IllegalTypeException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public redef static func of(a: Any): InterfaceTypeInfo
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws IllegalTypeException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public redef static func of<T>(): InterfaceTypeInfo
    
    /**
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws IllegalMemoryException
    * @throws NoneValueException
    * @throws ReflectException
    * @throws OutOfMemoryError
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop sealedSubtypes: Collection<TypeInfo>
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func isSealed(): Bool
}

@!APILevel[
    since: "22"
]
public enum ModifierInfo <: Equatable<ModifierInfo> & Hashable & ToString {
    @!APILevel[
        since: "22"
    ]
    Open |
    @!APILevel[
        since: "22"
    ]
    Override |
    @!APILevel[
        since: "22"
    ]
    Redef |
    @!APILevel[
        since: "22"
    ]
    Abstract |
    @!APILevel[
        since: "22"
    ]
    Sealed |
    @!APILevel[
        since: "22"
    ]
    Mut |
    @!APILevel[
        since: "22"
    ]
    Static
    @!APILevel[
        since: "22"
    ]
    public override operator func == (that: ModifierInfo): Bool
    
    @!APILevel[
        since: "22"
    ]
    public override operator func != (that: ModifierInfo): Bool
    
    @!APILevel[
        since: "22"
    ]
    public func hashCode(): Int64
    
    @!APILevel[
        since: "22"
    ]
    public override func toString(): String
}

@!APILevel[
    since: "22"
]
public class PackageInfo <: Equatable<PackageInfo> & Hashable & ToString {
    /**
    * @throws IllegalMemoryException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public static func get(qualifiedName: String): PackageInfo
    
    /**
    * @throws IllegalMemoryException
    * @throws IndexOutOfBoundsException
    * @throws FSException
    * @throws IllegalSynchronizationStateException
    * @throws ReflectException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public static func load(path: String): PackageInfo
    
    @!APILevel[
        since: "22"
    ]
    public prop qualifiedName: String
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop name: String
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop typeInfos: Collection<TypeInfo>
    
    @!APILevel[
        since: "22"
    ]
    public prop version: String
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws ReflectException
    * @throws InfoNotFoundException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws IllegalSynchronizationStateException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop subPackages: Collection<PackageInfo>
    
    /**
    * @throws IllegalMemoryException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop parentPackage: PackageInfo
    
    /**
    * @throws IllegalMemoryException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop rootPackage: PackageInfo
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func getSubPackage(qualifiedName: String): PackageInfo
    
    /**
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop variables: Collection<GlobalVariableInfo>
    
    /**
    * @throws InfoNotFoundException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop functions: Collection<GlobalFunctionInfo>
    
    /**
    * @throws NoneValueException
    * @throws IllegalSynchronizationStateException
    * @throws ReflectException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws OutOfMemoryError
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func getTypeInfo(qualifiedTypeName: String): TypeInfo
    
    /**
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws IllegalStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func getVariable(name: String): GlobalVariableInfo
    
    /**
    * @throws NoneValueException
    * @throws IllegalSynchronizationStateException
    * @throws ReflectException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws OutOfMemoryError
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func getFunction(name: String, parameterTypes: Array<TypeInfo>): GlobalFunctionInfo
    
    /**
    * @throws InfoNotFoundException
    * @throws NoneValueException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func getFunctions(name: String): Array<GlobalFunctionInfo>
    
    @!APILevel[
        since: "22"
    ]
    public operator func ==(that: PackageInfo): Bool
    
    @!APILevel[
        since: "22"
    ]
    public operator func !=(that: PackageInfo): Bool
    
    @!APILevel[
        since: "22"
    ]
    public func hashCode(): Int64
    
    @!APILevel[
        since: "22"
    ]
    public func toString(): String
}

@!APILevel[
    since: "22"
]
public class ParameterInfo <: Equatable<ParameterInfo> & Hashable & ToString {
    @!APILevel[
        since: "22"
    ]
    public prop index: Int64
    
    /**
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop name: String
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop typeInfo: TypeInfo
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop annotations: Collection<Annotation>
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func findAnnotation<T>(): ?T where T <: Annotation
    
    /**
    * @throws OutOfMemoryError
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws NoneValueException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func findAllAnnotations<T>(): Array<T> where T <: Annotation
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func getAllAnnotations(): Array<Annotation>
    
    @!APILevel[
        since: "22"
    ]
    public operator func ==(that: ParameterInfo): Bool
    
    @!APILevel[
        since: "22"
    ]
    public operator func !=(that: ParameterInfo): Bool
    
    @!APILevel[
        since: "22"
    ]
    public func hashCode(): Int64
    
    /**
    * @throws NoneValueException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws ReflectException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws OutOfMemoryError
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func toString(): String
}

@!APILevel[
    since: "22"
]
public class PrimitiveTypeInfo <: TypeInfo {
    /**
    * @throws OutOfMemoryError
    * @throws IllegalMemoryException
    * @throws NoneValueException
    * @throws ReflectException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws InfoNotFoundException
    * @throws IllegalSynchronizationStateException
    * @throws IllegalTypeException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public static redef func get(qualifiedName: String): PrimitiveTypeInfo
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws IllegalTypeException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public static redef func of(a: Any): PrimitiveTypeInfo
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws IllegalTypeException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public static redef func of<T>(): PrimitiveTypeInfo
}

@!APILevel[
    since: "22"
]
public class StructTypeInfo <: TypeInfo {
    /**
    * @throws OutOfMemoryError
    * @throws IllegalMemoryException
    * @throws NoneValueException
    * @throws ReflectException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws InfoNotFoundException
    * @throws IllegalSynchronizationStateException
    * @throws IllegalTypeException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public static redef func get(qualifiedName: String): StructTypeInfo
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws IllegalTypeException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public static redef func of(a: Any): StructTypeInfo
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws IllegalTypeException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public static redef func of<T>(): StructTypeInfo
    
    /**
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws InfoNotFoundException
    * @throws NoneValueException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop constructors: Collection<ConstructorInfo>
    
    /**
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop instanceVariables: Collection<InstanceVariableInfo>
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop staticVariables: Collection<StaticVariableInfo>
    
    /**
    * @throws IllegalTypeException
    * @throws NoneValueException
    * @throws IllegalSynchronizationStateException
    * @throws InvocationTargetException
    * @throws ReflectException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws OutOfMemoryError
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func construct(args: Array<Any>): Any
    
    /**
    * @throws NoneValueException
    * @throws IllegalSynchronizationStateException
    * @throws ReflectException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws OutOfMemoryError
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func getConstructor(parameterTypes: Array<TypeInfo>): ConstructorInfo
    
    /**
    * @throws ReflectException
    * @throws IllegalArgumentException
    * @throws OutOfMemoryError
    * @throws IndexOutOfBoundsException
    * @throws IllegalStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func getInstanceVariable(name: String): InstanceVariableInfo
    
    /**
    * @throws NoneValueException
    * @throws IllegalSynchronizationStateException
    * @throws ReflectException
    * @throws IllegalArgumentException
    * @throws OutOfMemoryError
    * @throws IndexOutOfBoundsException
    * @throws IllegalStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func getStaticVariable(name: String): StaticVariableInfo
}

@!APILevel[
    since: "22"
]
sealed abstract class TypeInfo <: Equatable<TypeInfo> & Hashable & ToString {
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public static func of<T>(): TypeInfo
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public static func of(a: Any): TypeInfo
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @Deprecated[message: "Use 'ClassTypeInfo.of(Object)' instead."]
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public static func of(a: Object): ClassTypeInfo
    
    /**
    * @throws OutOfMemoryError
    * @throws IllegalMemoryException
    * @throws NoneValueException
    * @throws ReflectException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws InfoNotFoundException
    * @throws IllegalSynchronizationStateException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public static func get(qualifiedName: String): TypeInfo
    
    /**
    * @throws ReflectException
    * @throws OutOfMemoryError
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop name: String
    
    /**
    * @throws ReflectException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws OutOfMemoryError
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop qualifiedName: String
    
    /**
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws InfoNotFoundException
    * @throws NoneValueException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop instanceFunctions: Collection<InstanceFunctionInfo>
    
    /**
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws InfoNotFoundException
    * @throws NoneValueException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop staticFunctions: Collection<StaticFunctionInfo>
    
    /**
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws InfoNotFoundException
    * @throws NoneValueException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop instanceProperties: Collection<InstancePropertyInfo>
    
    /**
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws InfoNotFoundException
    * @throws NoneValueException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop staticProperties: Collection<StaticPropertyInfo>
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop annotations: Collection<Annotation>
    
    /**
    * @throws NoneValueException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws ReflectException
    * @throws OutOfMemoryError
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws MisMatchException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop superInterfaces: Collection<InterfaceTypeInfo>
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop modifiers: Collection<ModifierInfo>
    
    /**
    * @throws ReflectException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws OutOfMemoryError
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func isSubtypeOf(supertype: TypeInfo): Bool
    
    /**
    * @throws NoneValueException
    * @throws IllegalSynchronizationStateException
    * @throws ReflectException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws OutOfMemoryError
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func getInstanceFunction(name: String, parameterTypes: Array<TypeInfo>): InstanceFunctionInfo
    
    /**
    * @throws ReflectException
    * @throws InfoNotFoundException
    * @throws NoneValueException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func getInstanceFunctions(name: String): Array<InstanceFunctionInfo>
    
    /**
    * @throws NoneValueException
    * @throws IllegalSynchronizationStateException
    * @throws ReflectException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws OutOfMemoryError
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func getStaticFunction(name: String, parameterTypes: Array<TypeInfo>): StaticFunctionInfo
    
    /**
    * @throws ReflectException
    * @throws InfoNotFoundException
    * @throws NoneValueException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func getStaticFunctions(name: String): Array<StaticFunctionInfo>
    
    /**
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws NoneValueException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func getInstanceProperty(name: String): InstancePropertyInfo
    
    /**
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws NoneValueException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func getStaticProperty(name: String): StaticPropertyInfo
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func findAnnotation<T>(): ?T where T <: Annotation
    
    /**
    * @throws OutOfMemoryError
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws NoneValueException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func findAllAnnotations<T>(): Array<T> where T <: Annotation
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func getAllAnnotations(): Array<Annotation>
    
    /**
    * @throws ReflectException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws OutOfMemoryError
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public operator func ==(that: TypeInfo): Bool
    
    /**
    * @throws ReflectException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws OutOfMemoryError
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public operator func !=(that: TypeInfo): Bool
    
    @!APILevel[
        since: "22"
    ]
    public func hashCode(): Int64
    
    /**
    * @throws ReflectException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws OutOfMemoryError
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func toString(): String
}


@!APILevel[
    since: "22"
]
public type Annotation = Object

/**
* @throws OutOfMemoryError
* @throws IllegalMemoryException
* @throws NoneValueException
* @throws ReflectException
* @throws InfoNotFoundException
* @throws IllegalSynchronizationStateException
* @throws IndexOutOfBoundsException
* @throws IllegalArgumentException
*/
@!APILevel[
    since: "22",
    throwexception: true
]
public func parseParameterTypes(parameters: String): Array<TypeInfo>

@!APILevel[
    since: "22"
]
public class InstanceVariableInfo <: Equatable<InstanceVariableInfo> & Hashable & ToString {
    /**
    * @throws IllegalStateException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop name: String
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop typeInfo: TypeInfo
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop modifiers: Collection<ModifierInfo>
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop annotations: Collection<Annotation>
    
    @!APILevel[
        since: "22"
    ]
    public func isMutable(): Bool
    
    /**
    * @throws NoneValueException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws ReflectException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws OutOfMemoryError
    * @throws IllegalTypeException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func getValue(instance: Any): Any
    
    /**
    * @throws NoneValueException
    * @throws IllegalSynchronizationStateException
    * @throws ReflectException
    * @throws IllegalStateException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws OutOfMemoryError
    * @throws IllegalTypeException
    * @throws InfoNotFoundException
    * @throws IllegalSetException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func setValue(instance: Any, newValue: Any): Unit
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func findAnnotation<T>(): ?T where T <: Annotation
    
    /**
    * @throws OutOfMemoryError
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws NoneValueException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func findAllAnnotations<T>(): Array<T> where T <: Annotation
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func getAllAnnotations(): Array<Annotation>
    
    @!APILevel[
        since: "22"
    ]
    public operator func ==(that: InstanceVariableInfo): Bool
    
    @!APILevel[
        since: "22"
    ]
    public operator func !=(that: InstanceVariableInfo): Bool
    
    @!APILevel[
        since: "22"
    ]
    public func hashCode(): Int64
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws IllegalStateException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func toString(): String
}

@!APILevel[
    since: "22"
]
public class StaticVariableInfo <: Equatable<StaticVariableInfo> & Hashable & ToString {
    /**
    * @throws IllegalStateException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop name: String
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop typeInfo: TypeInfo
    
    /**
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop modifiers: Collection<ModifierInfo>
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop annotations: Collection<Annotation>
    
    @!APILevel[
        since: "22"
    ]
    public func isMutable(): Bool
    
    @!APILevel[
        since: "22"
    ]
    public func getValue(): Any
    
    /**
    * @throws IllegalTypeException
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IllegalStateException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws IllegalSetException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func setValue(newValue: Any): Unit
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func findAnnotation<T>(): ?T where T <: Annotation
    
    /**
    * @throws OutOfMemoryError
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws NoneValueException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func findAllAnnotations<T>(): Array<T> where T <: Annotation
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func getAllAnnotations(): Array<Annotation>
    
    @!APILevel[
        since: "22"
    ]
    public operator func ==(that: StaticVariableInfo): Bool
    
    @!APILevel[
        since: "22"
    ]
    public operator func !=(that: StaticVariableInfo): Bool
    
    @!APILevel[
        since: "22"
    ]
    public func hashCode(): Int64
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IllegalStateException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func toString(): String
}

@!APILevel[
    since: "22"
]
public class GlobalVariableInfo <: Equatable<GlobalVariableInfo> & Hashable & ToString {
    /**
    * @throws IllegalStateException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop name: String
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop typeInfo: TypeInfo
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public prop annotations: Collection<Annotation>
    
    @!APILevel[
        since: "22"
    ]
    public func isMutable(): Bool
    
    @!APILevel[
        since: "22"
    ]
    public func getValue(): Any
    
    /**
    * @throws NoneValueException
    * @throws IllegalSynchronizationStateException
    * @throws ReflectException
    * @throws IllegalStateException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    * @throws OutOfMemoryError
    * @throws IllegalTypeException
    * @throws InfoNotFoundException
    * @throws IllegalSetException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func setValue(newValue: Any): Unit
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func findAnnotation<T>(): ?T where T <: Annotation
    
    /**
    * @throws OutOfMemoryError
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws NoneValueException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func findAllAnnotations<T>(): Array<T> where T <: Annotation
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws IllegalArgumentException
    * @throws IndexOutOfBoundsException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func getAllAnnotations(): Array<Annotation>
    
    @!APILevel[
        since: "22"
    ]
    public operator func ==(that: GlobalVariableInfo): Bool
    
    @!APILevel[
        since: "22"
    ]
    public operator func !=(that: GlobalVariableInfo): Bool
    
    @!APILevel[
        since: "22"
    ]
    public func hashCode(): Int64
    
    /**
    * @throws OutOfMemoryError
    * @throws NoneValueException
    * @throws ReflectException
    * @throws IllegalSynchronizationStateException
    * @throws InfoNotFoundException
    * @throws IllegalStateException
    * @throws IndexOutOfBoundsException
    * @throws IllegalArgumentException
    */
    @!APILevel[
        since: "22",
        throwexception: true
    ]
    public func toString(): String
}

